/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Helpers;

import Entity.Participante;
import Entity.Roles;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInput;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.io.OutputStream;

/**
 *
 * @author Baron
 */
public class Helper {
    
    private String _File = "C:\\Users\\Baron\\Desktop\\Participantes.ser";
   
    public void save(Participantes lstParticipantes){
        try{
          File oFile = new  File(_File);
          if(!oFile.exists())
              oFile.createNewFile();
          //use buffering
          OutputStream file = new FileOutputStream( oFile );
          OutputStream buffer = new BufferedOutputStream( file );
          ObjectOutput output = new ObjectOutputStream( buffer );
          try{
            output.writeObject(lstParticipantes);
          }
          finally{
            output.close();
          }
        }  
        catch(IOException ex){
          
        }
    }
    
    public void addParticipante(Participante oParticipante){
        
        //Cargamos la lista de participantes
        Participantes oParticipantes = load();
        //Si el objeto es nulo, creamos una nueva instancia
        if(oParticipantes == null)
            oParticipantes = new Participantes();
        //Añadimos el nuevo participante a la lista
        oParticipantes.addParticipante(oParticipante);
        //Guardamos
        this.save(oParticipantes);
        
    }
    
    public void delParticipante(String cedula){
        //Cargamos la lista de participantes
        Participantes oParticipantes = load();
        //Si el objeto es nulo, creamos una nueva instancia
        if(oParticipantes != null){
            oParticipantes = oParticipantes.delParticipante(cedula);
        }
        this.save(oParticipantes);
    
    }
    
    public Participante getParticipante(String cedula){
        //Cargamos la lista de participantes
        Participantes oParticipantes = load();
        return oParticipantes.getParticipante(cedula);
        
    
    }
    
    public String getNombreUsuario(String cedula){
        //Cargamos la lista de participantes
        Participantes oParticipantes = load();
        return oParticipantes.getParticipante(cedula).getNombre();
        
    
    }
    
    public String getUsuarioAsignado(String cedula){
        //Cargamos la lista de participantes
        Participantes oParticipantes = load();
        return oParticipantes.getParticipante(cedula).getAsignado();
        
    
    }
    
    public Participantes load(){
        
        Participantes oParticipantes = null;
        
        try{
          File oFile = new  File(_File);
          if(!oFile.exists())
              oFile.createNewFile();
            //use buffering
            InputStream file = new FileInputStream( oFile );
            InputStream buffer = new BufferedInputStream( file );
            ObjectInput input = new ObjectInputStream ( buffer );
            
            try{
                
                oParticipantes = (Participantes)input.readObject();
                if(oParticipantes == null || oParticipantes.getParticipantes().isEmpty()){
                    oParticipantes = InitLst();
                }
                
            }catch(Exception ex){
                oParticipantes = InitLst();
            }finally{
                input.close();
            }
        }catch(Exception ex){
            oParticipantes = InitLst();
            this.save(oParticipantes);
        }
        
        return oParticipantes;
                
    }
    private Participantes InitLst(){
      Roles oRol = new Roles();
      
      Participante oParticipanteAdm = new Participante();
      oParticipanteAdm.setCedula("0304540406");
      oParticipanteAdm.setNombre("robert.baron");
      oParticipanteAdm.setRol(oRol.Administrador);
      oParticipanteAdm.setCorreo("robert.baron@s-com.com");
      oParticipanteAdm.setPassword("password");
      oParticipanteAdm.setLab(5);
      
      Participantes oParticipantes = new Participantes();
      oParticipantes.addParticipante(oParticipanteAdm);
      
      return oParticipantes;
    }
    public String Logon(String cedula,String password){
        
        
        String rol = "Failed";
        Participantes oParticipantes = this.load();
        
        boolean logon = false;
        for(Participante participante : oParticipantes.getParticipantes()){
            if(participante.getCedula().equals(cedula) && participante.getPassword().equals(password)){
                rol = participante.getRol();
                logon = true;
                break;
            }
        }
        return rol;
    }
    
    public void resetPassword(String cedula){
        //Cargamos la lista de participantes
        Participantes oParticipantes = load();
        //Si el objeto es nulo, creamos una nueva instancia
        if(oParticipantes != null){
            oParticipantes = oParticipantes.resetPassword(cedula);
        }
        this.save(oParticipantes);
    
    }
    
    public String genPass (){
        return "Reset";
    }
}
